// type state = myVuex.demoModule.IState;

const state = {
  demoArr: []
};
type IState = typeof state;

/*
  getters
  有时候我们需要从 store 中的 state 中派生出一些状态，例如对列表进行过滤并计数：
 */
const getters = {};

/*
  actions
  Action 类似于 mutation，不同在于：
  Action 提交的是 mutation，而不是直接变更状态。
  Action 可以包含任意异步操作。
 */
const actions = {
  // 异步提交写法

  // async xxx({ commit, state }: any) {
  //   commit('setLoading', true, { root: true });
  //   const { code, data, message } = await xxx(xxx);
  //   commit('setLoading', false, { root: true });
  //   if (code === 2000) {
  //     commit('setUserInfo', data);
  //   }
  // }
  pushDemoObj({ commit, state }: any, obj: any) {
    commit('SET_DEMO_ARR', obj);
  }
};

/*
  mutations
  更改 Vuex 的 store 中的状态的唯一方法是提交 mutation
 */
const mutations = {
  ['SET_DEMO_ARR'](state: any, obj: any) {
    state.demoArr = [...state.demoArr, obj];
  }
};

export default {
  namespaced: true,
  state,
  getters,
  actions,
  mutations
};
export { IState };
